Efficient Network Stack for Wireless Application Protocols

ABSTRACT

In embodiments of efficient network stack for wireless application protocols, a network stack receives an application-layer message in a first wireless application protocol that includes a source address and a destination address, maps the source address to an Internet Protocol version 6 (IPv6) source address, and maps the destination address to an IPv6 source address. The source node transmits the application-layer message to a destination node in a mesh network using a network stack that implements a second wireless application protocol using the IPv6 source address, and maps the destination address to an IPv6 source address.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 15/767,115, filed on Apr. 9, 2018, which in turn isa National Stage Entry of International Patent Application No.PCT/US2016/025526, filed on Apr. 1, 2016, which in turn claims priorityto U.S. Provisional Patent Application No. 62/141,853, filed on Apr. 2,2015, the disclosures of which are incorporated by reference herein intheir entireties.

BACKGROUND

Using wireless mesh networking to connect devices to each other, and tocloud-based services, is increasingly popular for sensing environmentalconditions, controlling equipment, and providing information and alertsto users. There are legacy wireless application protocols that havelarge deployments of devices, as well as newer wireless applicationprotocols that offer enhanced features and better connectivity fordistributed applications. However, the evolution and proliferation ofvarious wireless application protocols has led to incompatibilities inhome automation networks, even though the various wireless applicationprotocols use networking stacks that are similar in function. In manycases various wireless application protocols use the same standardizedtechnologies at various layers of their network stacks, but are notcompatible or interoperable.

SUMMARY

This summary is provided to introduce simplified concepts of efficientnetwork stack for wireless application protocols. The simplifiedconcepts are further described below in the Detailed Description. Thissummary is not intended to identify essential features of the claimedsubject matter, nor is it intended for use in determining the scope ofthe claimed subject matter.

Efficient network stack for wireless application protocols, generallyrelated to communicating application-level messages using a networkstack, in a mesh network, is described. In embodiments, a network stackof a source node can receive an application-layer message that includesa source address and a destination address, map the source address to anInternet Protocol version 6 (IPv6) source address, and map thedestination address to an IPv6 source address. The source node transmitsthe application-layer message to a destination node in the mesh networkusing the IPv6 source address and the IPv6 address, and using thenetwork stack. The network stack includes a transport layer configuredto transport the application-layer message using User Datagram Protocol(UDP), a network layer configured to communicate the application-layermessage using IPv6, a data link layer configured to encode theapplication-layer message for transmission, the data link layerincluding a 6LoWPAN adaptation layer and a Media Access Control (MAC)layer, and a physical layer configured to transmit the encodedapplication-layer message with a wireless transceiver in the meshnetwork.

Efficient network stack for wireless application protocols, generallyrelated to communicating application-level messages using a networkstack, in a mesh network, is described. In embodiments, a dual-stackrouter can receive an application-layer message, which includes a sourceaddress and a destination address, using a first network stack thatimplements a first network protocol, map the source address to anInternet Protocol version 6 (IPv6) source address, and map thedestination address to an IPv6 source address. The dual-stack routertransmits the application-layer message to a destination node using asecond network stack that implements a second network protocol, andusing the IPv6 source address and the IPv6 destination address. Thesecond network stack includes a transport layer configured to transportthe application-layer message using User Datagram Protocol (UDP), anetwork layer configured to communicate the application-layer messageusing IPv6, a data link layer configured to encode the application-layermessage for transmission, the data link layer including a 6LoWPANadaptation layer and a Media Access Control (MAC) layer, and a physicallayer configured to transmit the encoded application-layer message viathe mesh network.

Efficient network stack for wireless application protocols, generallyrelated to service discovery across multiple mesh networks, isdescribed. In embodiments, a computing device can establishcommunication with multiple mesh networks over a communication networkand transmit a discovery message for a service to the multiple meshnetworks, which causes the discovery message to propagate to nodes inthe multiple mesh networks. The computing device can receive a responsemessage from each node in the multiple mesh networks that supports theservice, the response message indicating that the service is supportedand an address of the node that supports the service.

Efficient network stack for wireless application protocols, generallyrelated to translating application-level messages using a cloud-basedtranslation service, is described. In embodiments, a gateway receives anapplication-layer message, which includes a source address and adestination address, via a mesh network interface. The gateway forwardsthe received application-layer message over an external network to atranslation service where the translation service maps the sourceaddress to an Internet Protocol Version 6 (IPv6) source address and mapsthe destination address to an IPv6 destination address. The gatewayreceives a translated application-layer message from the translationservice, which includes the IPv6 source address and the IPv6 destinationaddress and transmits the translated application-layer message over themesh network interface using a network stack. The network stack includesa transport layer configured to transport the application-layer messageusing User Datagram Protocol (UDP), a network layer configured tocommunicate the application-layer message using IPv6, a data link layerconfigured to encode the application-layer message for transmission, thedata link layer including a 6LoWPAN adaptation layer and a Media AccessControl (MAC) layer, and a physical layer configured to transmit theencoded application-layer message via the mesh network.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of efficient network stack for wireless applicationprotocols are described with reference to the following drawings. Thesame numbers are used throughout the drawings to reference like featuresand components:

FIG. 1 illustrates an example mesh network system in which variousembodiments of the efficient network stack for wireless applicationprotocols can be implemented.

FIG. 2 illustrates an example environment in which various embodimentsof the efficient network stack for wireless application protocols can beimplemented.

FIG. 3 illustrates an Open Systems Interconnection (OSI) model that inwhich various embodiments of the efficient network stack for wirelessapplication protocols techniques can be implemented.

FIG. 4 illustrates an example of protocols used in a mesh networkenvironment in accordance with embodiments of the efficient networkstack for wireless application protocols.

FIG. 5 illustrates an example of the stack architecture of the ZigBeewireless application protocol with which embodiments of efficientnetwork stack for wireless application protocols can be implemented.

FIG. 6 illustrates an example embodiment of the efficient network stackfor wireless application protocols with ZigBee as the applicationprotocol in accordance with embodiments of efficient network stack forwireless application protocols.

FIG. 7 illustrates an example embodiment of the efficient network stackfor wireless application protocols with ZigBee as the applicationprotocol in accordance with embodiments of efficient network stack forwireless application protocols.

FIG. 8 illustrates an example embodiment of the efficient network stackfor wireless application protocols with Z-Wave as the applicationprotocol in accordance with embodiments of efficient network stack forwireless application protocols.

FIG. 9 illustrates an example of the efficient network stack forwireless application protocols with AllJoyn as the application protocolin accordance with embodiments of efficient network stack for wirelessapplication protocols.

FIG. 10 illustrates an example of the efficient network stack forwireless application protocols with OIC as the application protocol inaccordance with embodiments of efficient network stack for wirelessapplication protocols.

FIG. 11 illustrates an example of the efficient network stack forwireless application protocols with the fabric network as theapplication protocol in accordance with embodiments of efficient networkstack for wireless application protocols.

FIG. 12 illustrates an example embodiment of a dual-stack router inaccordance with embodiments of efficient network stack for wirelessapplication protocols.

FIG. 13 illustrates an example embodiment of a gateway and a translationservice in accordance with embodiments of efficient network stack forwireless application protocols.

FIG. 14 illustrates an example embodiment of service discovery inaccordance with embodiments of efficient network stack for wirelessapplication protocols.

FIG. 15 illustrates an example method of efficient network stack forwireless application protocols as generally related to application-layermessage translation in accordance with embodiments of the techniquesdescribed herein.

FIG. 16 illustrates another example method of efficient network stackfor wireless application protocols as generally related toapplication-layer message translation in accordance with embodiments ofthe techniques described herein.

FIG. 17 illustrates another example method of efficient network stackfor wireless application protocols as generally related toapplication-layer message translation in accordance with embodiments ofthe techniques described herein.

FIG. 18 illustrates an example method of efficient network stack forwireless application protocols as generally related to service discoveryin accordance with embodiments of the techniques described herein.

FIG. 19 illustrates an example environment in which a mesh network canbe implemented in accordance with embodiments of the techniquesdescribed herein.

FIG. 20 illustrates an example mesh network device that can beimplemented in a mesh network environment in accordance with one or moreembodiments of the techniques described herein.

FIG. 21 illustrates an example system with an example device that canimplement embodiments of efficient network stack for wirelessapplication protocols.

DETAILED DESCRIPTION

A number of application protocols exist for wireless communication amongdevices in a home environment. However, the evolution and proliferationof various wireless application protocols has led to incompatibilitiesin home automation networks. For example, a homeowner installs alighting control network that uses a first application protocol andlater decides to automate HVAC controls. The first application protocolmay only support lighting control, leading the homeowner to install asystem using a second application protocol for the HVAC control. The twodifferent application protocols may have many similar features, mayshare a common radio spectrum, and may even have similar network stacks,but the two application protocols operate as separate, incompatiblenetworks that the user must individually maintain and operate.

To effectively and efficiently communicate data between devices withinthe home environment, multiple wireless application protocols areadapted to communicate using a common, efficient network stack, such asthe Thread® network stack. The efficient network stack is described inU.S. patent application Ser. No. 13/926,312 entitled “Efficient NetworkLayer for IPv6 Protocol” filed Jun. 25, 2013, the disclosure of which isincorporated by reference herein in its entirety. A fabric network,using the efficient network stack, may enable numerous devices within ahome to communicate with each other using one or more logical networks.The fabric network is described in U.S. patent application Ser. No.13/926,335 entitled “Efficient Communication for Devices of a HomeNetwork” filed Jun. 25, 2013, the disclosure of which is incorporated byreference herein in its entirety.

The efficient network stack provides reliable, cost-effective, lowpower, wireless, device-to-device communication using IP-based, meshnetworking. By running the multiple application protocols over theefficient network stack, the multiple application protocols utilizecommon transport and networking protocols for network operation,routing, security, and reliability, as described in detail below.

The efficient network stack establishes a communication network in whichnumerous devices within a home may communicate with each other via awireless mesh network. The communication network supports InternetProtocol version 6 (IPv6) communication such that each connected devicehas a unique Internet Protocol (IP) address. Moreover, to enable eachdevice to integrate with a home, it may be useful for each device tocommunicate within the network using low amounts of power. By enablingdevices to communicate using low power, the devices may bebattery-powered and placed anywhere in a home without being coupled to acontinuous power source.

The efficient network stack establishes a procedure in which data istransferred between two or more devices such that the establishment ofthe communication network involves little user input, the communicationbetween devices involves little energy, and the communication network,itself, is secure. In one embodiment, the efficient network stack is anIPv6-based communication network that employs Routing InformationProtocol-Next Generation (RIPng) as its routing mechanism and a DatagramTransport Layer Security (DTLS) protocol as its security mechanism. Assuch, the efficient network stack provides a simple means for adding orremoving devices to a home while protecting the information communicatedbetween the connected devices. The adding of devices to a mesh networkin a home includes commissioning devices to join the mesh network andoptionally provisioning the devices to update and/or configure thedevice to operate as part of an application or service. Thecommissioning of mesh network devices is described in U.S. patentapplication Ser. No. 14/749,616 entitled “Mesh Network Commissioning”filed Jun. 24, 2015, the disclosure of which is incorporated byreference herein in its entirety.

While features and concepts of the described systems and methods for theefficient network stack for wireless application protocols can beimplemented in any number of different environments, systems, devices,and/or various configurations, embodiments of the efficient networkstack for wireless application protocols are described in the context ofthe following example devices, systems, and configurations.

FIG. 1 illustrates an example mesh network system 100 in which variousembodiments of the efficient network stack for wireless applicationprotocols can be implemented. The mesh network 100 (i.e., the fabricnetwork) is a wireless mesh network that includes routers 102, arouter-eligible end device 104, and end devices 106. The routers 102,the router-eligible end device 104, and the end devices 106, eachinclude a mesh network interface for communication over the meshnetwork. The routers 102 receive and transmit packet data over the meshnetwork interface. The routers 102 also route traffic across the meshnetwork 100. The routers 102 and the router-eligible end devices 104 canassume various roles, and combinations of roles, within the mesh network100, as discussed below.

The router-eligible end devices 104 are located at leaf nodes of themesh network topology and are not actively routing traffic to othernodes in the mesh network 100. The router-eligible device 104 is capableof becoming a router 102 when the router-eligible device 104 isconnected to additional devices. The end devices 106 are devices thatcan communicate using the mesh network 100, but lack the capability,beyond simply forwarding to its parent router 102, to route traffic inthe mesh network 100. For example, a battery-powered sensor is one typeof end device 106.

The routers 102, the router-eligible end device 104, and the end devices106 include network credentials that are used to authenticate theidentity of these devices as being a member of the mesh network 100. Therouters 102, the router-eligible end device 104, and the end devices 106also use the network credentials to encrypt communications in the meshnetwork.

FIG. 2 illustrates an example environment 200 in which variousembodiments of the efficient network stack for wireless applicationprotocols can be implemented. The environment 200 includes the meshnetwork 100, in which some routers 102 are performing specific roles inthe mesh network 100. The devices within the mesh network 100, asillustrated by the dashed line, are communicating securely over the meshnetwork 100, using the network credentials. Devices shown outside themesh network 100 do not have a copy of the network credentials for themesh network 100 and cannot use mesh network layer security to securelycommunicate.

A border router 202 (also known as a gateway and/or an edge router) isone of the routers 102. The border router 202 includes a secondinterface for communication with an external network, outside the meshnetwork 100. The border router 202 connects to an access point 204 overthe external network. For example, the access point 204 may be anEthernet router, a Wi-Fi access point, or any other suitable device forbridging different types of networks. The access point 204 connects to acommunication network 206, such as the Internet. A cloud service 208,which is connected via the communication network 206, provides servicesrelated to and/or using the devices within the mesh network 100. By wayof example, and not limitation, the cloud service 208 providesapplications that include connecting end user devices, such as smartphones, tablets, and the like, to devices in the mesh network 100,processing and presenting data acquired in the mesh network 100 to endusers, linking devices in one or more mesh networks 100 to user accountsof the cloud service 208, provisioning and updating devices in the meshnetwork 100, and so forth.

A user choosing to control devices in the mesh network 100 can use amobile device 210, which connects to the border router 202 via theexternal network technology of the access point 204, to commission thenew device. The mobile device 210 may be any computing device, such as asmart phone, tablet, notebook computer, and so forth, with a suitableuser interface and communication capabilities to execute applicationsthat control devices to the mesh network 100.

One of the routers 102 performs the role of a leader 216 for the meshnetwork 100. The leader 216 manages router identifier assignment and theleader 216 is the central arbiter of network configuration informationfor the mesh network 100. The leader 216 also controls whichcommissioning device is accepted as a sole, active commissioner for themesh network 100, at any given time.

The Efficient Network Stack

FIG. 3 illustrates an example block diagram of an Open SystemsInterconnection (OSI) model 300 that characterizes a communicationsystem for the example environments 100, 200 in which variousembodiments of the efficient network stack for wireless applicationprotocols techniques can be implemented. Generally, the efficientnetwork stack may be part of the Open Systems Interconnection (OSI)model 300. The OSI model 300 illustrates functions of a communicationsystem with respect to abstraction layers, in that the OSI model mayspecify a networking framework or how communications between devices maybe implemented. In one embodiment, the OSI model includes six layers: aphysical layer 302, a data link layer 304, a network layer 306, atransport layer 308, a platform layer 310, and an application layer 312.Generally, each layer in the OSI model 300 serves the layer above it andis served by the layer below it. In at least some embodiments, a higherlayer is agnostic to technologies used in lower layers. For example, theplatform layer 310 is agnostic to the network type used in the networklayer 306.

The physical layer 302 provides hardware specifications for devices thatcommunicate with each other. As such, the physical layer 302 establisheshow devices connect to each other, assists in managing how communicationresources are shared between devices, and the like.

The data link layer 304 specifies how data is transferred betweendevices. Generally, the data link layer 304 provides a way in which datapackets being transmitted are encoded and decoded into bits as part of atransmission protocol.

The network layer 306 specifies how the data being transferred to adestination node is routed. The network layer 306 also provides asecurity protocol that maintains the integrity of the data beingtransferred.

The transport layer 308 specifies a transparent transfer of the datafrom a source node to a destination node. The transport layer 308 alsocontrols how the transparent transfer of the data remains reliable. Assuch, the transport layer 308 is used to verify that data packetsintended to transfer to the destination node indeed reached thedestination node. Example protocols that may be employed in thetransport layer 308 include Transmission Control Protocol (TCP) and UserDatagram Protocol (UDP).

The platform layer 310 (also known as an application sublayer, anapplication interface layer, and/or an application framework)establishes connections between devices according to the protocolspecified within the transport layer 308. The platform layer 310 alsotranslates the data packets into a form that the application layer 312may use. The application layer 312 supports a software application thatmay directly interface with the user. As such, the application layer 312implements protocols defined by the software application. For example,the software application may provide services such as file transfers,electronic mail, and the like.

FIG. 4 illustrates an example of protocols used in an embodiment of anefficient network stack 400 as part of the OSI stack 300 shown anddescribed with reference to FIG. 3. In an embodiment, the physical layer302 of the efficient network stack 400 includes an IEEE 802.15.4Physical (PHY) layer 402 to transmit and receive mesh networkcommunications in the mesh network 100.

In an embodiment, the data link layer 304 of the efficient network stack400 includes an IEEE 802.15.4 Media Access Control (MAC) layer 404 tospecify how data is transferred between devices, including MAC security,and a 6LoWPAN adaptation layer 406 to adapt IPv6 addresses to IEEE802.15.4 addressing. In an embodiment, the network layer 306 of theefficient network stack 400 uses IPv6, at 408, and a routing protocol410, such as Distance Vector Routing, to specify how the data beingtransferred to a destination node is routed.

In an embodiment, the transport layer 308 of the efficient network stack400 uses User Datagram Protocol (UDP), at 412, to specify a transparenttransfer of the data from a source node to the destination node. Thetransport layer 308 uses a Datagram Transport Layer Security (DTLS)protocol 414 as its security mechanism for the data transfer from thesource node to the destination node. Alternatively, the transport layer308 can use Transport Control Protocol (TCP) and Transport LayerSecurity (TLS) for the data transfer from the source node to thedestination node.

Application Protocols Using the Efficient Network Stack

A number of wireless network standards define application protocols andframeworks for device to device communication, such as ZigBee®, DustNetworks®, Z-Wave®, Open Interconnect Consortium (OIC), IoTivity,AllJoyn™, ISA100, WirelessHART, and so forth. These wireless standardsare typically defined in terms of a layered model that specifiesservices and/or technologies that provide the functions described withrespect to the OSI model 300, above.

The various application protocols and frameworks may specify portions oftheir respective layered models by selecting standardized technologies.For example, ZigBee specifies IEEE 802.15.4 for its physical and datalink layers, AllJoyn specifies TCP/UDP and IP for its transport andnetwork layers, and OIC specifies DTLS/UDP and IPv6 for its transportand network layers. As a result, the various application protocols andframeworks utilize networking protocols that are similar, or identical,to the networking protocols included in the efficient network stack 400.The various application protocols and frameworks encode and interpretapplication-level messages in varying manners at the application layer312, but the various application protocols and frameworks rely onsimilar or identical services from the transport layer 308 through thephysical layer 302. Thus, the upper layers of the various applicationprotocols and frameworks can be adapted to use the transport layer 308through the physical layer 302 of the efficient network stack 400.

An addressing scheme specific to any application layer protocol ismapped to IPv6 addressing for the source and destination addresses ofthe application-level messages and the application-level messages aretransported between source and destination nodes using the efficientnetwork stack 400. IPv6 addressing expands the logical and physical spanof the network running the application protocol, as described in detailbelow. For example, the mapping of addresses to IPv6 may be done by theefficient network stack 400, by a layer, sub-layer, or a shim layerinserted between the application layer and the efficient network stack400, or by a layer, sub-layer, or a shim layer inserted into theefficient network stack 400.

A formatting scheme specific to any application layer protocol, such asthe fixed, binary formatting in the ZigBee Cluster Library (ZCL), may beserialized (or marshalled) for transmission. For example, applicationlayer messages are serialized using Concise Binary Object Representation(CBOR), Protocol Buffers, or any other suitable serialization format.For example, the serialization may be done by the efficient networkstack 400, by a layer, sub-layer, or a shim layer inserted between theapplication layer and the efficient network stack 400, or by a layer,sub-layer, or a shim layer inserted into the efficient network stack400.

The following sections provide an overview of ZigBee, a detailedexample, using ZigBee, of the application layer 312 of a wirelessapplication protocol operating over the efficient network stack 400, andexamples of the adaptation of other wireless application protocols overthe efficient network stack 400. Although aspects of the efficientnetwork stack 400 are described in examples of specific wirelessapplication protocols and/or application profiles, the concepts applyequally to any wireless application protocol and/or application profile.

ZigBee

ZigBee is a specification for a suite of communication protocols used tocreate personal area networks built using low-power radios. Though itslow power radios limit transmission distances, ZigBee devices cantransmit data over long distances by passing data through a mesh networkof intermediate devices to reach more distant ones. ZigBee is typicallyused in low data-rate applications that require long battery life andsecure networking. Applications include wireless light switches, homeautomation, smart energy, and other consumer and industrialapplications.

FIG. 5 illustrates the ZigBee stack architecture 500. The main functionsof a ZigBee network layer 502 are to enable the correct use of the IEEE802.15.4 MAC layer 404 and provide a suitable interface for use by theZigBee application layer 504. The ZigBee network layer 502 includes twoservice access points (SAPs) for the ZigBee application layer 504. Anetwork layer data entity SAP creates and manages network layer dataunits from the payload of the ZigBee application layer 504 and performsrouting according to a current ZigBee network topology. A network layermanagement entity SAP is used to handle configuration of new devices andestablish new networks. The network layer management entity SAPdetermines whether a neighboring device belongs to the network anddiscovers new neighbors and routers.

The routing protocol used by the ZigBee network layer 502 is Ad-hocOn-demand Distance Vector (AODV) routing. In order to find a destinationdevice, a source device broadcasts a route request to all of itsneighbors. The neighbors then broadcast the request to their neighbors,flooding the network until the destination device is reached. Once thedestination device is reached, the destination device sends a routereply via unicast transmission following the lowest cost path back tothe source device. Once the source device receives the reply, the sourcedevice updates its routing table for the destination address with a nexthop in the path and a path cost.

The ZigBee application layer 504 is the highest-level layer defined bythe ZigBee specification, and is the effective interface of the ZigBeesystem to its end users. The ZigBee application layer 504 includes aZigBee Device Object 506, an application sublayer 508, and anapplication framework 510 that includes a number of application objects512.

The ZDO 506 is responsible for overall device management, security keys,and policies. The ZDO 506 is responsible for defining the role of adevice as either a coordinator or an end device, discovery of newdevices on the network, and identification of services offered by thenew devices. The ZDO 506 then establishes secure links with externaldevices and replies to binding requests.

The application support sublayer (APS) 508 works as a bridge between theZigBee network layer 502 and the other components of the ZigBeeapplication layer 504. The APS 508 maintains up-to-date binding tablesin the form of a database, which can be used to find appropriate devicesdepending on the services that are needed by an application and offeredby the devices in the network.

A ZigBee application may consist of communicating objects whichcooperate to carry out desired tasks. The application object 512comprises clusters that define specific functionality used by theapplication. ZigBee clusters are used to encode and interpret messagesat the application layer and are described in greater detail in thesection “ZigBee Cluster Library,” below. The clusters in the applicationobjects 512 communicate using the facilities provided by the APS 508 andare supervised by the ZDO 506.

Addressing is also part of the ZigBee application layer 504. A networknode consists of an IEEE 802.15.4-conformant radio transceiver and oneor more device descriptions, which are collections of attributes whichcan be polled or set, or which can be monitored through events. Thetransceiver is the base for addressing, and devices within a node arespecified by an endpoint identifier in the range 1-240 that isassociated with the base address of the transceiver.

ZigBee Device and Service Discovery

In order for applications to communicate, their comprising devices use acommon application protocol that includes application profiles. Theapplication profiles group together conventions for each applicationprofile, such as types of messages, formats, attributes, and so forth.Devices that collaborate in an application are bound together bymatching input and output cluster identifiers that are unique within thecontext of a given application profile and are associated to an incomingor outgoing data flow in a device. Binding defines relationships betweentwo devices, specific endpoints, and a cluster ID. Binding provides amechanism for attaching an endpoint on one node to one or more endpointson another node. The bindings are stored in binding tables of the bounddevices and the tables contain source and destination pairings.

Device address and service discovery is performed by unicast andbroadcast messaging. A coordinator in a ZigBee network assigns 16-bitnetwork addresses to devices in the ZigBee network. When the 16-bitnetwork address of a device is known, the unique, 64-bit, IEEE 802.15.4address of the node address can be obtained using a unicast request.When the 16-bit network address of the device is not known, a petitionis broadcast to obtain the IEEE address. The IEEE address of the deviceis included in the payload of a response to the broadcast petition. Inresponse to receiving the broadcast petition, an end device respondswith the IEEE address of the end device, while a network coordinator ora router will also send the addresses of all the devices associated withthe network coordinator or router.

The discovery of services in a ZigBee network is performed by unicastand broadcast messaging. When the address of a device is known,descriptors of the services provided by the device can be directlyrequested using a unicast command to the device. To discover servers forparticular services, a source device broadcasts a command to the ZigBeenetwork to request locations of servers that provide the particularservice. The servers that support the requested service respond withunicast messages to the source device indicating support for therequested service.

ZigBee Cluster Library

In ZigBee, related application-level commands and attributes arecollected together in clusters that define an interface to specificfunctionality. ZigBee clusters are used to encode and interpret messagesat the application layer Servers store the attributes of a cluster and anode that affects or manipulates the attributes of the cluster stored ina server is considered a client of that cluster. A client device sendscommands to manipulate attributes of the server device. The serverdevice sends responses for the commands to the client device.

The ZigBee Cluster Library (ZCL) is a repository for a number ofclusters that define specific functionality. Some clusters are providedas a part of the ZigBee standard and provide commonly used functionalityacross application profiles or within a particular domain, such as alighting control profile. Other clusters are created by product vendorsto incorporate vendor-specific functionality. The clusters in the ZCLmay be subdivided into functional domains, such as HVAC, lighting,security, and so forth. Profiles (or application profiles) are createdby incorporating various clusters from the ZCL. For example, profilesmay include Home Automation, Commercial Building Automation, SmartEnergy, Telecommunication Applications, and the like.

During service discovery, a simple descriptor in a server is queried toobtain information about the server and what clusters the serversupports. The clusters supported by an application object within anapplication profile are identified through the simple descriptor. In thesimple descriptor, the application input cluster list contains the listof server clusters supported on the server device and an applicationoutput cluster list contains a list of client clusters supported on theserver device.

ZigBee Over the Efficient Network Stack

FIG. 6 illustrates an example 600 of the efficient network stack 400 forwireless application protocols with ZigBee as the application protocolusing the efficient network stack. As previously discussed, the ZigBeeapplication objects 512 include clusters that encode and interpretmessages at the ZigBee application layer 504. Incoming messages arereceived at a physical radio in the IEEE 802.15.4 physical (PHY) layer402 layer, are processed upward through the layers of the efficientnetwork stack 400 to the ZigBee application layer 504, where themessages are interpreted using clusters in the ZCL.

To send and receive messages, ZigBee devices use 802.15.4 16-bit networkaddresses for source addresses and destination addresses. When a messageis passed down from a cluster in the ZigBee application layer 504, theefficient network stack 400 converts the 802.15.4 16-bit networkaddresses to IPv6 addresses that maps to the 802.15.4 16-bit networkaddresses.

Alternatively, the clusters in the ZigBee application layer 504 may use64-bit IEEE addresses for source addresses and destination addresses.When a message is passed down from a cluster in the ZigBee applicationlayer 504, the efficient network stack 400 converts the 64-bit IEEEaddresses to IPv6 addresses that maps to the 64-bit IEEE addresses.

FIG. 7 illustrates an example 700 of the efficient network stack forwireless application protocols with ZigBee as the application protocolusing the efficient network stack 400. Alternatively, reliable messagingwith retry, for messages from the ZigBee application layer 504 uses aConstrained Application Protocol (CoAP) layer 702. CoAP providesreliable messaging over UDP with confirmable messages, as well asacknowledgement and reset response messages. CoAP has IANA-assigned portnumber 5638 and port number 5684 for CoAP secured by DTLS. Someembodiments of the devices using CoAP with ZigBee over the efficientnetwork stack 400 may use a predefined port for communication, by way ofexample and not limitation, port 6116. For example, a ZigBee serverlistens to the predefined port for a message that is a message usingCoAP. Alternatively to a predefined port, the devices may use amulticast domain name system (mDNS) to resolve port numbers to hostnames by broadcasting a request for port addresses for ZigBeeapplications using CoAP with ZigBee over the efficient network stack400. Thus, each host device may assign its own ports and may usedifferent ports than other devices in the network. In some embodiments,there may be a parent router for a sleepy, child end device thatresponse for the sleepy, child end device when the mDNS broadcastarrives during a sleep state of the child end device.

Additionally in an embodiment, messages from the ZigBee applicationlayer 504 are serialized before transmission. For example, messages fromthe from the ZigBee application layer 504 are serialized using ConciseBinary Object Representation (CBOR), Protocol Buffers, or any othersuitable serialization format.

Additionally or alternatively, devices may also respond with messagesthat indicate whether the devices support ZigBee over the efficientnetwork stack 400. Such polling may be used to determine a devicedescription for the devices rather than only what device portscorrespond to ZigBee over the efficient network stack 400. In someembodiments, a response to the mDNS polling may be used as an indicationthat the device supports ZigBee over the efficient network stack 400along with the port that is used during such communications.

The ZigBee coordinator is a unique device in each ZigBee network thatestablishes the ZigBee network and stores network information includingnetwork keys. The leader 216 in a fabric network performs similarservices for the fabric network. In an embodiment, when ZigBee devicescommunicate using the efficient network stack 400, the leader 216 of thefabric network also acts as the coordinator for the ZigBee devices.

Z-Wave Over the Efficient Network Stack

Z-Wave's® is a protocol for a wireless network for communication amonghome automation devices. The MAC and PHY layers of the Z-Wave® standardare specified in International Telecommunication Union RecommendationITU-T G9959. The Network layer and Application interface sublayer areproprietary and specified by Sigma Designs of Milpitas, CA.

The Z-wave network operates as a mesh network that can contain up totwo-hundred, thirty two (232) nodes. A central, network controller,manages, and is used to setup, each Z-wave network. Each node added to aZ-wave network is “included” in the Z-wave network before it can operatein the Z-wave network. Each Z-wave network is identified by a Network IDand each device is further identified by a Node ID. The Network ID orHome ID is the common identification of all nodes belonging to onelogical Z-wave network. In an embodiment, when Z-Wave devicescommunicate using the efficient network stack 400, the leader 216 of thefabric network also acts as the controller for the Z-Wave network.

FIG. 8 illustrates an example 800 of the efficient network stack forwireless application protocols with Z-Wave as the application protocolusing the efficient network stack 400. The efficient network stack 400replaces the physical layer 302, data link layer 304, network layer 308,and transport layer 308 of Z-wave to transport Z-wave application framesover an IPv6, fabric network. In an example, the Z-Wave applicationinterface sublayer 802 and Z-Wave applications 804 communicate using theefficient network stack 400. Optionally, the CoAP layer 702 may beincluded to provide reliable messaging for Z-Wave transferacknowledgments.

AllJoyn Over Thread

AllJoyn® is a system that provides a software framework and core set ofsystem services for client-server communication among devices using adistributed software bus (D-Bus) over IP networks. Applications use thedistributed software bus to communicate via published applicationprogram interfaces (APIs). Applications that publish APIs are producers(servers) and applications consuming the APIs are consumers (clients).AllJoyn bus formation is ad-hoc and is independent of the underlying(typically IP-based) network.

Nodes in an AllJoyn network can be applications, routers, orapplications that contain a router. Applications can only connect torouters, and routers can connect to other routers, to form a meshnetwork topology.

FIG. 9 illustrates an example 900 of the efficient network stack forwireless application protocols with AllJoyn as the application protocolusing the efficient network stack 400. The efficient network stack 400provides the physical layer 302, data link layer 304, network layer 308,and transport layer 308 over which applications using an AllJoyntransport layer 902, an AllJoyn routing node layer 904, an AllJoynmessaging layer 906, and an AllJoyn bus attachment layer 908 communicatebetween devices.

OIC Over Thread

The Open Interconnect Consortium (OIC) specification defines a frameworkfor interaction among devices and applications (entities) for multipleapplication-specific profiles. Each entity may expose resources, withunique identifiers (URIs) and operations associated with each resource.Each operation can have an initiator (client) of the operation and aresponder (server) for the operation.

FIG. 10 illustrates an example 1000 of an efficient network stack forwireless application protocols with OIC as the application protocolusing the efficient network stack 400. The efficient network stack 400provides the physical layer 302, data link layer 304, network layer 308,and transport layer 308 over which the OIC application profile 1002communicates using the OCI framework services 1004. The OCI frameworkservices 1004, includes the CoAP layer 702, a Concise Binary ObjectRepresentation (CBOR) encoding layer 1006, and an OIC Resource Model.

Examples of OIC application profiles are a smart home profile, aconnected health profile, an automotive profile, and so forth. An OICapplication profile 1002 uses a set of OIC framework services 1004 tocommunicate between OIC devices. The OIC framework services 1004 connectOIC devices over the physical layer 302, data link layer 304, networklayer 308, and transport layer 308.

The OIC framework services 1004 consists of functions which provide corefunctionalities for OIC operation. Identification and Addressing definesthe identifier and addressing capability. Discovery defines the processfor discovering available OIC Devices and OIC Resources. Resource modelspecifies the capability for representation of the entities in terms ofresources and defines mechanisms for manipulating the resources. Create,Read, Update, Delete, and Notify (CRUDN) provides a generic scheme forthe interactions between an OIC Client and OIC Server. Messagingprovides specific message protocols for RESTful operation, i.e. CRUDNinteractions. Device management specifies the discipline of managing thecapabilities of an OIC Device and includes device provisioning andinitial setup as well as device monitoring and diagnostics. Securityincludes authentication, authorization, and access control mechanismsrequired for secure access to the entities.

The Fabric Network Over the Efficient Network Stack

The fabric network, as described above, comprises an efficient platformlayer, and/or an efficient application layer that use the efficientnetwork stack 400. The fabric network enables numerous devices within ahome to communicate with each other using one or more logical networks,as well as communicate over the Internet to services, such as the cloudservice 208.

FIG. 11 illustrates an example 1100 of the efficient network stack forwireless application protocols with the fabric network application layer1102 as the application protocol using the efficient network stack 400.The efficient fabric network stack 400 provides the physical layer 302,data link layer 304, network layer 308, and transport layer 308, overwhich the fabric network application layer 1102 communicates. Theplatform layer 310 of the fabric network is the CoAP layer 702 thatprovides the messaging connectivity between devices in the fabricnetwork.

Migration Process

To transition a network running a wireless application protocol to runthe wireless application protocol using the efficient network stack 400,there are several methods of transitioning the devices in the networkbased on the capabilities of each device. In the case where everynetwork device has sufficient resources (e.g. memory, processor power, acompatible radio transceiver) the entire network can be transitioned atonce, such as by an out-of-band upgrade of each node or propagating afirmware upgrade over the network to each node. For example, devices ina ZigBee network are upgraded by using the ZigBee OTA Upgrade ClusterInterface to install a new firmware image in the devices that replacesthe lower layers of the ZigBee protocol stack with the efficient networkstack 400.

There are cases where some network nodes lack sufficient resources toupgrade to the efficient network stack 400. For example, a ZigBee enddevice with insufficient memory may not be able to accept the upgrade.In this case, routers in the network are upgraded to support dual-stackoperation. The dual-stack router supports both the original wirelessapplication protocol stack and the wireless application protocol runningon the efficient network stack 400.

FIG. 12 illustrates an example 1200 of a dual-stack router 1202 usingthe efficient network stack 400 for wireless application protocols.Although the dual-stack router 1202 is shown with a ZigBee stack, anywireless protocol stack may be used along with the efficient networkstack 400. The dual-stack router 1202 includes the IEEE 802.15.4 PHYlayer 402, the IEEE 802.15.4 MAC layer 404, and the ZigBee network layer502 for ZigBee communication using the first network stack, shown at1204. The dual-stack router 1202 also includes the efficient networkstack 400 and the CoAP layer 702 for fabric network communication usingthe second network stack, shown at 1206. The two network stacks, 1204and 1206, are connected to an application-layer translation application1208 that maps addresses between the two wireless application protocols,relays discovery messages and responses, and the like. For example, thedual stack router 1202 enables a resource-limited ZigBee end device tocommunicate as a part of the fabric network by translating communicationbetween the resource-limited ZigBee end device and fabric-networkdevices in the dual-stack router 1202.

Additionally, the dual-stack router 1202 enables two networks to run inparallel over mesh network nodes. The dual-stack router 1202 uses eachstack independently to route packets for each network. For example, oneset of nodes in the network operates as a ZigBee network and another setof nodes operates as a fabric network. Some nodes may participate inonly one network, while other nodes may participate in both networks.

Alternatively, the dual-stack router 1202 may include two radiotransceivers, one for each stack, to bridge between different networks.For example, a bridge device may have two radio transceivers to bridge aZ-Wave network, which operates in the 915 MHz ISM band, to a fabricnetwork, which operates in the 2.4 GHz ISM band. In another alternative,a single radio is shared between the two stacks on a time-slicedschedule to allocate the radio to each network stack for alternatingperiods of time.

Application Profile Gateway

FIG. 13 illustrates an example environment 1300 illustrating theoperation of a gateway and a translation service using the efficientnetwork stack for wireless application protocols. The function of theapplication-layer translation application 1208 need not be locatedwithin the mesh network 100. A mesh network device, such as the borderrouter 202, is used as a gateway 1302 to forward application-layermessages, via the communication network 206, to a translation service1304. For example, a ZigBee application-layer message an IEEE 802.15.4network is forwarded through the gateway 1302 to the translation service1304, which performs the function of the application-layer translationapplication 1208. At the translation service 1304, the ZigBeeapplication-layer message is translated for transmission using theefficient network stack 400. The translation service 1304 forwards thetranslated application-layer message to the gateway 1302. The gateway1302 then transmits the translated message using the efficient networkstack 400 over the mesh network 100.

The availability and address of the gateway 1302 may be included innetwork data that is maintained and propagated by the leader 216 in themesh network 100. Alternatively the availability and address of thegateway 1302 is discovered using as service discovery protocol, forexample mDNS. For example, any router 102 that receives a ZigBee messageuses the address of the gateway 1302 to forward the received ZigBeemessage over the fabric network to the gateway 1302. The gateway 1302forwards the received ZigBee message over the communication network 206to the translation service. The gateway receives the response from thetranslation service 1304 and forwards the translated message in theresponse over the fabric network to its destination. Alternatively, thegateway 1302 forwards the response from the translation service 1304 tothe router 102 that forwarded the ZigBee message to the gateway 1302.

While the translation service 1304 may translate all received messages,the application service can be associated with a particular applicationprofile. For example, a ZigBee message carrying a payload that isassociated with the home automation profile is sent to a translationservice 1304 that only translates messages for the home automationprofile. Another translation service 1304 may be associated with smartenergy, commercial building automation, and so forth. The gateway 1302identifies the application profile from the received ZigBee message andforwards received ZigBee message to the appropriate translation service1304. The translation service 1304 may be associated with a standardapplication profile or a vendor-specific profile.

A mapping of application profiles to translation services 1304 ismaintained by the leader 216, the gateway 1302, and/or by one or moreborder routers 202, for example in a table, database, and so forth. Themapping may be provisioned into the leader 219, the gateway 1302, and/orthe one or more border routers 202 during commissioning by a networkcommissioner either executing a provisioning application on thecommissioning device or by a provisioning service in the cloud.

Service and Address Discovery

Service discovery in a mesh network may only extend locally within themesh network. A node in a mesh network 100 may broadcast or flood themesh network to request for any nodes providing a particular service orsupporting a particular application profile to respond with a messagethat identifies the node providing the service. For example, the ZigBeeDevice Object (ZDO) 506 supports device (address) and/or servicediscovery one ZigBee devices within the address scope of a single ZigBeemesh network.

This type of service discovery mechanism is effective within a singlemesh network but does not scale well outside local address scope of themesh network. For example, a user may want to use an application on amobile device to control devices at multiple locations, such as home, anoffice, and/or a vacation home, which are on isolated mesh networks. Thefabric network has a mesh-local scope that is based on IPv6 addressingof nodes in a fabric network that can be used with the efficient networkstack 400 to extend service discovery beyond a mesh network in a single,physical location. The mesh-local scope of the fabric network isdescribed in U.S. patent application Ser. No. 14/798,448 entitled “MeshNetwork Addressing” filed Jul. 13, 2015, the disclosure of which isincorporated by reference herein in its entirety.

FIG. 14 illustrates an environment 1400 for service discovery acrossmultiple mesh networks. A mobile device 1402 connects via acommunication network 206 to a first mesh network 1404 and to a secondmesh network 1406. The mesh networks 1404, 1406 can belogically-separate mesh networks and/or physically-separate meshnetworks, for example at different geographic locations. The mobiledevice includes a discovery application 1408 for control of mesh networkdevices that share a common application profile. Some of the meshnetwork devices in the mesh networks 1404, 1406 and the discoveryapplication 1408 supports the common application profile, such as aZigBee lighting control profile. In the mesh network devices of the meshnetworks 1404 and 1406, the application profile and associated ZCLs runon the efficient network stack 400 within a common mesh-local addressscope, using any of the embodiments described above. The discoveryapplication 1408 initiates service discovery for a service using theservices of the ZDO in the mobile device 1402. A service discoverymessage is sent over the fabric network using broadcast or multicastmessaging to the mesh networks 1404 and 1406, causing the servicediscovery message to propagate or flood through the nodes of the meshnetworks 1404 and 1406. Any devices supporting the requested servicerespond to the discovery application 1408. Following the completion ofthe service discovery process, the discovery application 1408 cancommunicate with the discovered nodes and control devices in both meshnetworks 1404 and 1406.

Example methods 1500 through 1800 are described with reference torespective FIGS. 15-18 in accordance with one or more embodiments of theefficient network stack for wireless application protocols. Generally,any of the components, modules, methods, and operations described hereincan be implemented using software, firmware, hardware (e.g., fixed logiccircuitry), manual processing, or any combination thereof. Someoperations of the example methods may be described in the generalcontext of executable instructions stored on computer-readable storagememory that is local and/or remote to a computer processing system, andimplementations can include software applications, programs, functions,and the like. Alternatively or in addition, any of the functionalitydescribed herein can be performed, at least in part, by one or morehardware logic components, such as, and without limitation,Field-programmable Gate Arrays (FPGAs), Application-specific IntegratedCircuits (ASICs), Application-specific Standard Products (ASSPs),System-on-a-chip systems (SoCs), Complex Programmable Logic Devices(CPLDs), and the like.

FIG. 15 illustrates example method(s) 1500 of the efficient networkstack for wireless application protocols as generally related tocommunicating application messages using a network stack in a meshnetwork. The order in which the method blocks are described are notintended to be construed as a limitation, and any number of thedescribed method blocks can be combined in any order to implement amethod, or an alternate method.

At block 1502, a network stack in a mesh network device receives anapplication-layer message for an application, at an application layer.For example, the efficient network stack 400 receives anapplication-layer message from an application in the application layer312.

At block 1504, the network stack maps a source address in theapplication-layer message to an IPv6 source address. For example, theefficient network stack 400 determines a mapping of a source addressincluded in the application-layer message to a corresponding IPv6 sourceaddress.

At block 1506, the network stack maps a destination address in theapplication-layer message to an IPv6 destination address. For example,the efficient network stack 400 determines a mapping of a destinationaddress included in the application-layer message to a correspondingIPv6 destination address.

At block 1508, the mesh network device transmits the application-layermessage using the IPv6 source address and the IPv6 destination addressand using the network stack. For example, the efficient network stack400 transmits the application-layer message using the IPv6 sourceaddress and the IPv6 destination address over the mesh network 100.

FIG. 16 illustrates example method(s) 1600 of the efficient networkstack for wireless application protocols as generally related tocommunicating application messages using a network stack in a meshnetwork. The order in which the method blocks are described are notintended to be construed as a limitation, and any number of thedescribed method blocks can be combined in any order to implement amethod, or an alternate method.

At block 1602, a first network stack in a mesh network device receives apacket including an application-layer message. For example, anapplication-specific network stack 1204 receives a packet over the meshnetwork 100 that includes an application-layer message and passes theapplication-layer message to the application-layer translationapplication 1208.

At block 1604, a translation application maps a source address in theapplication-layer message to an IPv6 source address. For example, theapplication-layer translation application 1208, determines a mapping ofa source address included in the application-layer message to acorresponding IPv6 source address.

At block 1606, the translation application maps a destination address inthe application-layer message to an IPv6 destination address. Forexample, the application-layer translation application 1208 determines amapping of a destination address included in the application-layermessage to a corresponding IPv6 destination address.

At block 1608, the mesh network device transmits the application-layermessage using the IPv6 source address and the IPv6 destination addressand using the second network stack. For example at 1206, the efficientnetwork stack 400 receives the translated application layer-message fromapplication-layer translation application 1208 and transmits theapplication-layer message using the IPv6 source address and the IPv6destination address.

FIG. 17 illustrates example method(s) 1700 of efficient network stackfor wireless application protocols as generally related to using agateway for translating application messages using a network stack in amesh network. The order in which the method blocks are described are notintended to be construed as a limitation, and any number of thedescribed method blocks can be combined in any order to implement amethod, or an alternate method.

At block 1702, a gateway receives an application-layer message in apacket via a mesh network interface. For example, a gateway 1302receives a packet over mesh network 100 that includes anapplication-layer message.

Optionally, at block 1704, the gateway selects a translation servicebased on an application profile. For example, the gateway 1302determines a type of application profile from the contents of thereceived application-layer message and selects the translation service1304 that is mapped to the application profile.

At block 1706, the gateway forwards the received application-layermessage to a translation service. For example, the gateway 1302 forwardsthe received application-layer message over an external networkinterface to a translation service 1304. The translation service 1304determines mappings of a source address and a destination addressincluded in the application-layer message to a respective IPv6 sourceaddress and IPv6 destination address.

At block 1708, the gateway receives a translated application-layermessage from the translation service. For example, the gateway 1302receives a translated application-layer message, which includes the IPv6source address and the IPv6 destination address, from the translationservice 1304.

At block 1710, the gateway transmits the translated application-layermessage using the IPv6 source address and the IPv6 destination addressand using a network stack. For example, the gateway 1302 transmits thetranslated application-layer message over the mesh network 100 using theefficient network stack 400.

FIG. 18 illustrates example method(s) 1800 of efficient network stackfor wireless application protocols as generally related to servicediscovery in a mesh network. The order in which the method blocks aredescribed are not intended to be construed as a limitation, and anynumber of the described method blocks can be combined in any order toimplement a method, or an alternate method.

At block 1802, a computing device establishes communication to multiplemesh networks. For example, the mobile device 1402 establishescommunication via the communication network 206 to the mesh network 1404and the mesh network 1406, such as through the border routers 202.

At block 1804, the computing device transmits a service discoverymessage through the mesh networks. For example, the service discoveryapplication 1408 transmits a service discovery message from the mobiledevice 1402 to the mesh networks 1404 and 1406, which is effective topropagate the service discovery message to the nodes of the meshnetworks 1404 and 1406.

At block 1806, the computing device receives a response message fromeach node in the mesh networks that supports the service. For example,the mobile device 1402 receives a response message from each node in themesh networks 1404 and 1406 that support the service indicated in theservice discovery message.

FIG. 19 illustrates an example environment 1900 in which the meshnetwork 100 (as described with reference to FIG. 1), and embodiments ofefficient network stack for wireless application protocols can beimplemented. Generally, the environment 1900 includes the mesh network100 implemented as part of a smart-home or other type of structure withany number of mesh network devices that are configured for communicationin a mesh network. For example, the mesh network devices can include athermostat 1902, hazard detectors 1904 (e.g., for smoke and/or carbonmonoxide), cameras 1906 (e.g., indoor and outdoor), lighting units 1908(e.g., indoor and outdoor), and any other types of mesh network devices1910 that are implemented inside and/or outside of a structure 1912(e.g., in a smart-home environment). In this example, the mesh networkdevices can also include any of the previously described devices, suchas a gateway device 1302, a border router 202, a dual-stack router 1202,as well as any of the devices implemented as a router 102, and/or an enddevice 106.

In the environment 1900, any number of the mesh network devices can beimplemented for wireless interconnection to wirelessly communicate andinteract with each other. The mesh network devices are modular,intelligent, multi-sensing, network-connected devices that can integrateseamlessly with each other and/or with a central server or acloud-computing system to provide any of a variety of useful smart-homeobjectives and implementations. An example of a mesh network device thatcan be implemented as any of the devices described herein is shown anddescribed with reference to FIG. 20.

In implementations, the thermostat 1902 may include a Nest® LearningThermostat that detects ambient climate characteristics (e.g.,temperature and/or humidity) and controls a HVAC system 1914 in thesmart-home environment. The learning thermostat 1902 and other smartdevices “learn” by capturing occupant settings to the devices. Forexample, the thermostat learns preferred temperature set-points formornings and evenings, and when the occupants of the structure areasleep or awake, as well as when the occupants are typically away or athome.

A hazard detector 1904 can be implemented to detect the presence of ahazardous substance or a substance indicative of a hazardous substance(e.g., smoke, fire, or carbon monoxide). In examples of wirelessinterconnection, a hazard detector 1904 may detect the presence ofsmoke, indicating a fire in the structure, in which case the hazarddetector that first detects the smoke can broadcast a low-power wake-upsignal to all of the connected mesh network devices. The other hazarddetectors 1904 can then receive the broadcast wake-up signal andinitiate a high-power state for hazard detection and to receive wirelesscommunications of alert messages. Further, the lighting units 1908 canreceive the broadcast wake-up signal and activate in the region of thedetected hazard to illuminate and identify the problem area. In anotherexample, the lighting units 1908 may activate in one illumination colorto indicate a problem area or region in the structure, such as for adetected fire or break-in, and activate in a different illuminationcolor to indicate safe regions and/or escape routes out of thestructure.

In various configurations, the mesh network devices 1910 can include anentryway interface device 1916 that functions in coordination with anetwork-connected door lock system 1918, and that detects and respondsto a person's approach to or departure from a location, such as an outerdoor of the structure 1912. The entryway interface device 1916 caninteract with the other mesh network devices based on whether someonehas approached or entered the smart-home environment. An entrywayinterface device 1916 can control doorbell functionality, announce theapproach or departure of a person via audio or visual means, and controlsettings on a security system, such as to activate or deactivate thesecurity system when occupants come and go. The mesh network devices1910 can also include other sensors and detectors, such as to detectambient lighting conditions, detect room-occupancy states (e.g., with anoccupancy sensor 1920), and control a power and/or dim state of one ormore lights. In some instances, the sensors and/or detectors may alsocontrol a power state or speed of a fan, such as a ceiling fan 1922.Further, the sensors and/or detectors may detect occupancy in a room orenclosure, and control the supply of power to electrical outlets ordevices 1924, such as if a room or the structure is unoccupied.

The mesh network devices 1910 may also include connected appliancesand/or controlled systems 1926, such as refrigerators, stoves and ovens,washers, dryers, air conditioners, pool heaters 1928, irrigation systems1930, security systems 1932, and so forth, as well as other electronicand computing devices, such as televisions, entertainment systems,computers, intercom systems, garage-door openers 1934, ceiling fans1922, control panels 1936, and the like. When plugged in, an appliance,device, or system can announce itself to the mesh network as describedabove, and can be automatically integrated with the controls and devicesof the mesh network, such as in the smart-home. It should be noted thatthe mesh network devices 1910 may include devices physically locatedoutside of the structure, but within wireless communication range, suchas a device controlling a swimming pool heater 1928 or an irrigationsystem 1930.

As described above, the mesh network 100 includes a border router 202that interfaces for communication with an external network, outside themesh network 100. The border router 202 connects to an access point 204,which connects to the communication network 206, such as the Internet. Acloud service 208, which is connected via the communication network 206,provides services related to and/or using the devices within the meshnetwork 100. By way of example, the cloud service 208 can includeapplications for connecting end user devices 1938, such as smart phones,tablets, and the like, to devices in the mesh network, processing andpresenting data acquired in the mesh network 100 to end users, linkingdevices in one or more mesh networks 100 to user accounts of the cloudservice 208, provisioning and updating devices in the mesh network 100,and so forth. For example, a user can control the thermostat 1902 andother mesh network devices in the smart-home environment using anetwork-connected computer or portable device, such as a mobile phone ortablet device. Further, the mesh network devices can communicateinformation to any central server or cloud-computing system via theborder router 202 and the access point 204. The data communications canbe carried out using any of a variety of custom or standard wirelessprotocols (e.g., Wi-Fi, ZigBee for low power, 6LoWPAN, etc.) and/or byusing any of a variety of custom or standard wired protocols (CAT6Ethernet, HomePlug, etc.).

In various configurations, devices inside and/or outside the structure1912 may use any of the variety of wireless protocols and interoperateover the fabric network using the efficient network stack 400. In anembodiment, a ZigBee device senses a condition and communicates thatcondition to a device that operates natively on the fabric network. Forexample, the garage door opener 1934 that supports a ZigBee applicationprofile, such as the home automation profile, senses that the garagedoor is opening and/or that there is a change in occupancy in thegarage. The ZigBee application in the garage door opener 1934communicates the sensed change over the fabric network using theefficient network stack 400 to the learning thermostat 1902. Thelearning thermostat 1902 responds to the change sensed by the garagedoor opener 1934 and adjusts the temperature set-point for the home.

Any of the mesh network devices in the mesh network 100 can serve aslow-power and communication nodes to create the mesh network 100 in thesmart-home environment. Individual low-power nodes of the network canregularly send out messages regarding what they are sensing, and theother low-powered nodes in the environment—in addition to sending outtheir own messages—can repeat the messages, thereby communicating themessages from node to node (i.e., from device to device) throughout themesh network. The mesh network devices can be implemented to conservepower, particularly when battery-powered, utilizing low-poweredcommunication protocols to receive the messages, translate the messagesto other communication protocols, and send the translated messages toother nodes and/or to a central server or cloud-computing system. Forexample, an occupancy and/or ambient light sensor can detect an occupantin a room as well as measure the ambient light, and activate the lightsource when the ambient light sensor 1940 detects that the room is darkand when the occupancy sensor 1920 detects that someone is in the room.Further, the sensor can include a low-power wireless communication chip(e.g., a ZigBee chip) that regularly sends out messages regarding theoccupancy of the room and the amount of light in the room, includinginstantaneous messages coincident with the occupancy sensor detectingthe presence of a person in the room. As mentioned above, these messagesmay be sent wirelessly, using the mesh network, from node to node (i.e.,smart device to smart device) within the smart-home environment as wellas over the Internet to a central server or cloud-computing system.

In other configurations, various ones of the mesh network devices canfunction as “tripwires” for an alarm system in the smart-homeenvironment. For example, in the event a perpetrator circumventsdetection by alarm sensors located at windows, doors, and other entrypoints of the structure or environment, the alarm could still betriggered by receiving an occupancy, motion, heat, sound, etc. messagefrom one or more of the low-powered mesh nodes in the mesh network. Inother implementations, the mesh network can be used to automaticallyturn on and off the lighting units 1908 as a person transitions fromroom to room in the structure. For example, the mesh network devices candetect the person's movement through the structure and communicatecorresponding messages via the nodes of the mesh network. Using themessages that indicate which rooms are occupied, other mesh networkdevices that receive the messages can activate and/or deactivateaccordingly. As referred to above, the mesh network can also be utilizedto provide exit lighting in the event of an emergency, such as byturning on the appropriate lighting units 1908 that lead to a safe exit.The light units 1908 may also be turned-on to indicate the directionalong an exit route that a person should travel to safely exit thestructure.

The various mesh network devices may also be implemented to integrateand communicate with wearable computing devices 1942, such as may beused to identify and locate an occupant of the structure, and adjust thetemperature, lighting, sound system, and the like accordingly. In otherimplementations, RFID sensing (e.g., a person having an RFID bracelet,necklace, or key fob), synthetic vision techniques (e.g., video camerasand face recognition processors), audio techniques (e.g., voice, soundpattern, vibration pattern recognition), ultrasound sensing/imagingtechniques, and infrared or near-field communication (NFC) techniques(e.g., a person wearing an infrared or NFC-capable smartphone), alongwith rules-based inference engines or artificial intelligence techniquesthat draw useful conclusions from the sensed information as to thelocation of an occupant in the structure or environment.

In other implementations, personal comfort-area networks, personalhealth-area networks, personal safety-area networks, and/or other suchhuman-facing functionalities of service robots can be enhanced bylogical integration with other mesh network devices and sensors in theenvironment according to rules-based inferencing techniques orartificial intelligence techniques for achieving better performance ofthese functionalities. In an example relating to a personal health-area,the system can detect whether a household pet is moving toward thecurrent location of an occupant (e.g., using any of the mesh networkdevices and sensors), along with rules-based inferencing and artificialintelligence techniques. Similarly, a hazard detector service robot canbe notified that the temperature and humidity levels are rising in akitchen, and temporarily raise a hazard detection threshold, such as asmoke detection threshold, under an inference that any small increasesin ambient smoke levels will most likely be due to cooking activity andnot due to a genuinely hazardous condition. Any service robot that isconfigured for any type of monitoring, detecting, and/or servicing canbe implemented as a mesh node device on the mesh network, conforming tothe wireless interconnection protocols for communicating on the meshnetwork.

The mesh network devices 1910 may also include a smart alarm clock 1944for each of the individual occupants of the structure in the smart-homeenvironment. For example, an occupant can customize and set an alarmdevice for a wake time, such as for the next day or week. Artificialintelligence can be used to consider occupant responses to the alarmswhen they go off and make inferences about preferred sleep patterns overtime. An individual occupant can then be tracked in the mesh networkbased on a unique signature of the person, which is determined based ondata obtained from sensors located in the mesh network devices, such assensors that include ultrasonic sensors, passive IR sensors, and thelike. The unique signature of an occupant can be based on a combinationof patterns of movement, voice, height, size, etc., as well as usingfacial recognition techniques.

In an example of wireless interconnection, the wake time for anindividual can be associated with the thermostat 1902 to control theHVAC system in an efficient manner so as to pre-heat or cool thestructure to desired sleeping and awake temperature settings. Thepreferred settings can be learned over time, such as by capturing thetemperatures set in the thermostat before the person goes to sleep andupon waking up. Collected data may also include biometric indications ofa person, such as breathing patterns, heart rate, movement, etc., fromwhich inferences are made based on this data in combination with datathat indicates when the person actually wakes up. Other mesh networkdevices can use the data to provide other smart-home objectives, such asadjusting the thermostat 1902 so as to pre-heat or cool the environmentto a desired setting, and turning-on or turning-off the lights 1908.

In implementations, the mesh network devices can also be utilized forsound, vibration, and/or motion sensing such as to detect running waterand determine inferences about water usage in a smart-home environmentbased on algorithms and mapping of the water usage and consumption. Thiscan be used to determine a signature or fingerprint of each water sourcein the home, and is also referred to as “audio fingerprinting waterusage.” Similarly, the mesh network devices can be utilized to detectthe subtle sound, vibration, and/or motion of unwanted pests, such asmice and other rodents, as well as by termites, cockroaches, and otherinsects. The system can then notify an occupant of the suspected pestsin the environment, such as with warning messages to help facilitateearly detection and prevention.

FIG. 20 illustrates an example mesh network device 2000 that can beimplemented as any of the mesh network devices in a mesh network inaccordance with one or more embodiments of efficient network stack forwireless application protocols as described herein. The device 2000 canbe integrated with electronic circuitry, microprocessors, memory, inputoutput (I/O) logic control, communication interfaces and components, aswell as other hardware, firmware, and/or software to implement thedevice in a mesh network. Further, the mesh network device 2000 can beimplemented with various components, such as with any number andcombination of different components as further described with referenceto the example device shown in FIG. 21.

In this example, the mesh network device 2000 includes a low-powermicroprocessor 2002 and a high-power microprocessor 2004 (e.g.,microcontrollers or digital signal processors) that process executableinstructions. The device also includes an input-output (I/O) logiccontrol 2006 (e.g., to include electronic circuitry). Themicroprocessors can include components of an integrated circuit,programmable logic device, a logic device formed using one or moresemiconductors, and other implementations in silicon and/or hardware,such as a processor and memory system implemented as a system-on-chip(SoC). Alternatively or in addition, the device can be implemented withany one or combination of software, hardware, firmware, or fixed logiccircuitry that may be implemented with processing and control circuits.The low-power microprocessor 2002 and the high-power microprocessor 2004can also support one or more different device functionalities of thedevice. For example, the high-power microprocessor 2004 may executecomputationally intensive operations, whereas the low-powermicroprocessor 2002 may manage less complex processes such as detectinga hazard or temperature from one or more sensors 2008. The low-powerprocessor 2002 may also wake or initialize the high-power processor 2004for computationally intensive processes.

The one or more sensors 2008 can be implemented to detect variousproperties such as acceleration, temperature, humidity, water, suppliedpower, proximity, external motion, device motion, sound signals,ultrasound signals, light signals, fire, smoke, carbon monoxide,global-positioning-satellite (GPS) signals, radio-frequency (RF), otherelectromagnetic signals or fields, or the like. As such, the sensors2008 may include any one or a combination of temperature sensors,humidity sensors, hazard-related sensors, other environmental sensors,accelerometers, microphones, optical sensors up to and including cameras(e.g., charged coupled-device or video cameras, active or passiveradiation sensors, GPS receivers, and radio frequency identificationdetectors. In implementations, the mesh network device 2000 may includeone or more primary sensors, as well as one or more secondary sensors,such as primary sensors that sense data central to the core operation ofthe device (e.g., sensing a temperature in a thermostat or sensing smokein a smoke detector), while the secondary sensors may sense other typesof data (e.g., motion, light or sound), which can be used forenergy-efficiency objectives or smart-operation objectives.

The mesh network device 2000 includes a memory device controller 2010and a memory device 2012, such as any type of a nonvolatile memoryand/or other suitable electronic data storage device. The mesh networkdevice 2000 can also include various firmware and/or software, such asan operating system 2014 that is maintained as computer executableinstructions by the memory and executed by a microprocessor. The devicesoftware may also include a networking application 2016 that implementsembodiments of efficient network stack for wireless applicationprotocols. The mesh network device 2000 also includes a device interface2018 to interface with another device or peripheral component, andincludes an integrated data bus 2020 that couples the various componentsof the mesh network device for data communication between thecomponents. The data bus in the mesh network device may also beimplemented as any one or a combination of different bus structuresand/or bus architectures.

The device interface 2018 may receive input from a user and/or provideinformation to the user (e.g., as a user interface), and a receivedinput can be used to determine a setting. The device interface 2018 mayalso include mechanical or virtual components that respond to a userinput. For example, the user can mechanically move a sliding orrotatable component, or the motion along a touchpad may be detected, andsuch motions may correspond to a setting adjustment of the device.Physical and virtual movable user-interface components can allow theuser to set a setting along a portion of an apparent continuum. Thedevice interface 2018 may also receive inputs from any number ofperipherals, such as buttons, a keypad, a switch, a microphone, and animager (e.g., a camera device).

The mesh network device 2000 can include network interfaces 2022, suchas a mesh network interface for communication with other mesh networkdevices in a mesh network, and an external network interface for networkcommunication, such as via the Internet. The mesh network device 2000also includes wireless radio systems 2024 for wireless communicationwith other mesh network devices via the mesh network interface and formultiple, different wireless communications systems. The wireless radiosystems 2024 may include Wi-Fi, Bluetooth™, Mobile Broadband, and/orpoint-to-point IEEE 802.15.4. Each of the different radio systems caninclude a radio device, antenna, and chipset that is implemented for aparticular wireless communications technology. The mesh network device2000 also includes a power source 2026, such as a battery and/or toconnect the device to line voltage. An AC power source may also be usedto charge the battery of the device.

FIG. 21 illustrates an example system 2100 that includes an exampledevice 2102, which can be implemented as any of the mesh network devicesthat implement embodiments of efficient network stack for wirelessapplication protocols as described with reference to the previous FIGS.1-20. The example device 2102 may be any type of computing device,client device, mobile phone, tablet, communication, entertainment,gaming, media playback, and/or other type of device. Further, theexample device 2102 may be implemented as any other type of mesh networkdevice that is configured for communication on a mesh network, such as athermostat, hazard detector, camera, light unit, commissioning device,router, border router, joiner router, joining device, end device,leader, access point, and/or other mesh network devices.

The device 2102 includes communication devices 2104 that enable wiredand/or wireless communication of device data 2106, such as data that iscommunicated between the devices in a mesh network, data that is beingreceived, data scheduled for broadcast, data packets of the data, datathat is synched between the devices, etc. The device data can includeany type of communication data, as well as audio, video, and/or imagedata that is generated by applications executing on the device. Thecommunication devices 2104 can also include transceivers for cellularphone communication and/or for network data communication.

The device 2102 also includes input/output (I/O) interfaces 2108, suchas data network interfaces that provide connection and/or communicationlinks between the device, data networks (e.g., a mesh network, externalnetwork, etc.), and other devices. The I/O interfaces can be used tocouple the device to any type of components, peripherals, and/oraccessory devices. The I/O interfaces also include data input ports viawhich any type of data, media content, and/or inputs can be received,such as user inputs to the device, as well as any type of communicationdata, as well as audio, video, and/or image data received from anycontent and/or data source.

The device 2102 includes a processing system 2110 that may beimplemented at least partially in hardware, such as with any type ofmicroprocessors, controllers, and the like that process executableinstructions. The processing system can include components of anintegrated circuit, programmable logic device, a logic device formedusing one or more semiconductors, and other implementations in siliconand/or hardware, such as a processor and memory system implemented as asystem-on-chip (SoC). Alternatively or in addition, the device can beimplemented with any one or combination of software, hardware, firmware,or fixed logic circuitry that may be implemented with processing andcontrol circuits. The device 2102 may further include any type of asystem bus or other data and command transfer system that couples thevarious components within the device. A system bus can include any oneor combination of different bus structures and architectures, as well ascontrol and data lines.

The device 2102 also includes computer-readable storage memory 2112,such as data storage devices that can be accessed by a computing device,and that provide persistent storage of data and executable instructions(e.g., software applications, modules, programs, functions, and thelike). The computer-readable storage memory described herein excludespropagating signals. Examples of computer-readable storage memoryinclude volatile memory and non-volatile memory, fixed and removablemedia devices, and any suitable memory device or electronic data storagethat maintains data for computing device access. The computer-readablestorage memory can include various implementations of random accessmemory (RAM), read-only memory (ROM), flash memory, and other types ofstorage memory in various memory device configurations.

The computer-readable storage memory 2112 provides storage of the devicedata 2106 and various device applications 2114, such as an operatingsystem that is maintained as a software application with thecomputer-readable storage memory and executed by the processing system2110. The device applications may also include a device manager, such asany form of a control application, software application, signalprocessing and control module, code that is native to a particulardevice, a hardware abstraction layer for a particular device, and so on.In this example, the device applications also include a networkingapplication 2116 that implements embodiments of efficient network stackfor wireless application protocols, such as when the example device 2102is implemented as any of the mesh network devices described herein.

The device 2102 also includes an audio and/or video system 2118 thatgenerates audio data for an audio device 2120 and/or generates displaydata for a display device 2122. The audio device and/or the displaydevice include any devices that process, display, and/or otherwiserender audio, video, display, and/or image data, such as the imagecontent of a digital photo. In implementations, the audio device and/orthe display device are integrated components of the example device 2102.Alternatively, the audio device and/or the display device are external,peripheral components to the example device. In embodiments, at leastpart of the techniques described for efficient network stack forwireless application protocols may be implemented in a distributedsystem, such as over a “cloud” 2124 in a platform 2126. The cloud 2124includes and/or is representative of the platform 2126 for services 2128and/or resources 2130.

The platform 2126 abstracts underlying functionality of hardware, suchas server devices (e.g., included in the services 2128) and/or softwareresources (e.g., included as the resources 2130), and connects theexample device 2102 with other devices, servers, etc. The resources 2130may also include applications and/or data that can be utilized whilecomputer processing is executed on servers that are remote from theexample device 2102. Additionally, the services 2128 and/or theresources 2130 may facilitate subscriber network services, such as overthe Internet, a cellular network, or Wi-Fi network. The platform 2126may also serve to abstract and scale resources to service a demand forthe resources 2130 that are implemented via the platform, such as in aninterconnected device embodiment with functionality distributedthroughout the system 2100. For example, the functionality may beimplemented in part at the example device 2102 as well as via theplatform 2126 that abstracts the functionality of the cloud 2124.

Although embodiments of efficient network stack for wireless applicationprotocols have been described in language specific to features and/ormethods, the subject of the appended claims is not necessarily limitedto the specific features or methods described. Rather, the specificfeatures and methods are disclosed as example implementations ofefficient network stack for wireless application protocols, and otherequivalent features and methods are intended to be within the scope ofthe appended claims. Further, various different embodiments aredescribed, and it is to be appreciated that each described embodimentcan be implemented independently or in connection with one or more otherdescribed embodiments.

A method of communicating an application-layer message by a source nodeover a mesh network comprises receiving the application-layer messagethat includes a source address and a destination address; mapping thesource address to an Internet Protocol Version 6 (IPv6) source address;mapping the destination address to an IPv6 destination address;transmitting the application-layer message by the source node to adestination node in the mesh network using a network stack, the IPv6source address, and the IPv6 destination address, the network stackcomprising: a transport layer configured to transport theapplication-layer message using User Datagram Protocol (UDP); a networklayer configured to communicate the application-layer message usingIPv6; a data link layer configured to encode the application-layermessage for transmission, the data link layer comprising a 6LoWPANadaptation layer and a Media Access Control (MAC) layer; and a physicallayer configured to transmit the encoded application-layer message witha wireless transceiver in the mesh network.

Alternatively or in addition to the above described method, any one orcombination of: the network stack further comprises a Datagram TransportLayer Security (DTLS) layer; the network stack further comprises aConstrained Application Protocol (CoAP) layer; serializing theapplication-layer message; in response to said transmitting theapplication-layer message, receiving an application-layer responsemessage from the destination node using the network stack, andcommunicating the received application-layer response message to anapplication of the source node; wherein the application is one of: aZigBee application, a Z-Wave application, an Open InterconnectConsortium (OIC) application, an AllJoyn application, or a fabricnetwork application; and wherein the physical layer is an IEEE 802.15.4Physical (PHY) layer and the MAC layer is an IEEE 802.15.4 MAC layer.

A mesh network device comprises a mesh network interface configured forcommunication in a mesh network; a memory and processor system toimplement a network stack configured to: receive an application-layermessage that includes a source address and a destination address; mapthe source address to an Internet Protocol Version 6 (IPv6) sourceaddress; map the destination address to an IPv6 destination address;transmit the application-layer message to a destination mesh networkdevice using the network stack, the mapped source address, and themapped destination address, the network stack comprising: a transportlayer configured to transport the application-layer message using UserDatagram Protocol (UDP); a network layer configured to communicate theapplication-layer message using IPv6; a data link layer configured toencode the application-layer message for transmission, the data linklayer comprising a 6LoWPAN adaptation layer and a Media Access Control(MAC) layer; and a physical layer configured to transmit the encodedapplication-layer message over the mesh network.

Alternatively or in addition to the above described mesh network device,any one or combination of: the network stack further comprises aDatagram Transport Layer Security (DTLS) layer; the network stackfurther comprises a Constrained Application Protocol (CoAP) layer; thenetwork stack is configured to: serialize the application layer message;the network stack is configured to: in response to the transmission ofthe application-layer message, receive an application-layer responsemessage from the destination mesh network device, and communicate thereceived application-layer response message to an application of themesh network device; wherein the application is one of: a ZigBeeapplication, a Z-Wave application, an Open Interconnect Consortium (OIC)application, an AllJoyn application, or a fabric network application;and wherein the physical layer is an IEEE 802.15.4 Physical (PHY) layerand the MAC layer is an IEEE 802.15.4 MAC layer.

A mesh network system comprises a destination node configured to receivea packet over a mesh network; and a source node of the mesh networkconfigured to: receive an application-layer message that includes asource address and a destination address; map the source address in theapplication-layer message to an Internet Protocol Version 6 (IPv6)source address; map the destination address in the application-layermessage to an IPv6 destination address; transmit the application-layermessage to the destination node using a network stack, the IPv6 sourceaddress, and the IPv6 destination address, the network stack comprising:a transport layer configured to transport the application-layer messageusing User Datagram Protocol (UDP); a network layer configured tocommunicate the application-layer message using IPv6; a data link layerconfigured to encode the application-layer message for transmission, thedata link layer comprising a 6LoWPAN adaptation layer and a Media AccessControl (MAC) layer; and a physical layer configured to transmit theencoded application-layer message over the mesh network to thedestination node.

Alternatively or in addition to the above described mesh network system,any one or combination of: the network stack further comprises aDatagram Transport Layer Security (DTLS) layer; the network stackfurther comprises a Constrained Application Protocol (CoAP) layer; thesource node is configured to: in response to the transmission of theapplication-layer message, receive an application-layer response messagefrom the destination node at the physical layer of the network stack,and communicate the received application-layer response message to anapplication of the source node; wherein the application is one of: aZigBee application, a Z-Wave application, an Open InterconnectConsortium (OIC) application, an AllJoyn application, or a fabricnetwork application; and wherein the physical layer is an IEEE 802.15.4Physical (PHY) layer and the MAC layer is an IEEE 802.15.4 MAC layer.

A method of communicating an application-layer message of a firstnetwork protocol over a mesh network using a second network protocolcomprises receiving the application-layer message from a source node bya dual-stack router using a first network stack that implements thefirst network protocol; mapping a source address in theapplication-layer message to an Internet Protocol Version 6 (IPv6)source address; mapping a destination address in the application-layermessage to an IPv6 destination address; transmitting theapplication-layer message to a destination node using the IPv6 sourceaddress and the IPv6 destination address, and using a second networkstack that implements the second network protocol, the second networkstack comprising: a transport layer configured to transport theapplication-layer message using User Datagram Protocol (UDP); a networklayer configured to communicate the application-layer message usingIPv6; a data link layer configured to encode the application-layermessage for transmission, the data link layer comprising a 6LoWPANadaptation layer and a Media Access Control (MAC) layer; and a physicallayer configured to transmit the encoded application-layer message viathe mesh network.

Alternatively or in addition to the above described method, any one orcombination of: the second network stack further comprises a DatagramTransport Layer Security (DTLS) layer; the second network stack furthercomprises a Constrained Application Protocol (CoAP) layer; in responseto said transmitting the application-layer message, receiving anapplication-layer response message from the destination node using thesecond network stack, and forwarding the received application-layerresponse message to the source node using the first network stack;wherein the application is one of: a ZigBee application, a Z-Waveapplication, an Open Interconnect Consortium (OIC) application, anAllJoyn application, or a fabric network application; and wherein thephysical layer is an IEEE 802.15.4 Physical (PHY) layer and the MAClayer is an IEEE 802.15.4 MAC layer.

A mesh network device implemented as a dual-stack router comprises amesh network interface configured for communication in a mesh network; amemory and processor system to implement an application-layertranslation application that is configured to: receive anapplication-layer message from a source node using a first network stackthat implements a first network protocol; map a source address in theapplication-layer message to an Internet Protocol Version 6 (IPv6)source address; map a destination address in the application-layermessage to an IPv6 destination address; transmit the application-layermessage to a destination node using the IPv6 source address and the IPv6destination address, and using a second network stack that implements asecond network protocol, the second network stack comprising: atransport layer configured to transport the application-layer messageusing User Datagram Protocol (UDP); a network layer configured tocommunicate the application-layer message using IPv6; a data link layerconfigured to encode the application-layer message for transmission, thedata link layer comprising a 6LoWPAN adaptation layer and a Media AccessControl (MAC) layer; and a physical layer configured to transmit theencoded application-layer message via the mesh network.

Alternatively or in addition to the above described mesh network device,any one or combination of: the second network stack further comprises aDatagram Transport Layer Security (DTLS) layer; the second network stackfurther comprises a Constrained Application Protocol (CoAP) layer; theapplication-layer translation application is configured to: in responseto the transmission of the application-layer message, receive anapplication-layer response message from the destination node; andforward the received application-layer response message to the sourcenode using the first network stack; wherein the first network stackcomprises one or more layers of: a ZigBee network stack, a Z-Wavenetwork stack, an Open Interconnect Consortium (OIC) network stack, oran AllJoyn network stack; wherein the first network stack comprises oneor more layers of a Z-Wave network stack, and the mesh network devicecomprises a Z-Wave network interface configured for communication in aZ-Wave network; and wherein the physical layer is an IEEE 802.15.4Physical (PHY) layer and the MAC layer is an IEEE 802.15.4 MAC layer.

A mesh network system comprises a source node configured to communicateusing a first wireless application protocol; and a dual-stack routerconfigured to: receive an application-layer message using a firstnetwork stack that implements the first wireless application protocol;map a source address in the application-layer message to an InternetProtocol Version 6 (IPv6) source address; map a destination address inthe application-layer message to an IPv6 destination address; transmitthe application-layer message to a destination node using the IPv6source address and the IPv6 destination address, and using a secondnetwork stack that implements a second wireless application protocol,the second network stack comprising: a transport layer configured totransport the application-layer message using User Datagram Protocol(UDP); a network layer configured to communicate the application-layermessage using IPv6; a data link layer configured to encode theapplication-layer message for transmission, the data link layercomprising a 6LoWPAN adaptation layer and a Media Access Control (MAC)layer; and a physical layer configured to transmit the encodedapplication-layer message via the mesh network.

Alternatively or in addition to the above described mesh network system,any one or combination of: the second network stack further comprises aDatagram Transport Layer Security (DTLS) layer; the second network stackfurther comprises a Constrained Application Protocol (CoAP) layer; thedual-stack router is configured to: in response to the transmission ofthe application-layer message, receive an application-layer responsemessage from the destination node using the second network stack; andforward the received application-layer response message to the sourcenode using the first network stack; wherein the first wirelessapplication protocol is one of: a ZigBee wireless application protocol,a Z-Wave wireless application protocol, an Open Interconnect Consortium(OIC) wireless application protocol, or an AllJoyn wireless applicationprotocol; wherein the first network stack comprises one or more layersof a Z-Wave network stack, and the dual-stack router comprises a Z-Wavenetwork interface configured for communication in a Z-Wave network; andwherein the physical layer is an IEEE 802.15.4 Physical (PHY) layer andthe MAC layer is an IEEE 802.15.4 MAC layer.

A method of discovering a service across multiple mesh networkscomprises establishing communication between a computing device and themultiple mesh networks over a communication network; transmitting adiscovery message for the service from the computing device to themultiple mesh networks, said transmitting effective to propagate thediscovery message to nodes in the multiple mesh networks; and receivinga response message from each node in the multiple mesh networks thatsupports the service, the response message comprising an indication ofthe supported service and an address of the node.

Alternatively or in addition to the above described method, any one orcombination of: inserting a binding of the supported service and theaddress of each node that supports the service in a database; whereinthe multiple mesh networks are logically different mesh networks;wherein the multiple mesh networks are located in geographicallydifferent locations; wherein the mesh networks comprise nodes thatinclude a ZigBee application layer and an efficient network stack; andwherein the communication network is the Internet.

A computing device comprises a network interface configured forcommunication over a communication network to multiple mesh networks; amemory and processor system to implement a discovery application that isconfigured to: establish communication between the computing device andthe multiple mesh networks over the communication network; transmit adiscovery message for a service to the multiple mesh networks, thetransmission effective to propagate the discovery message to nodes inthe multiple mesh networks; and receive a response message from eachnode in the multiple mesh networks that supports the service, theresponse message comprising an indication of the supported service andan address of the node.

Alternatively or in addition to the above described mesh network device,any one or combination of: wherein the discovery application isconfigured to: insert a binding of the supported service and the addressof each node that supports the service in a database; wherein themultiple mesh networks are logically different mesh networks; whereinthe multiple mesh networks are located in geographically differentlocations; wherein the mesh networks comprise nodes that include aZigBee application layer and an efficient network stack; and wherein thecommunication network is the Internet.

A mesh network system comprises multiple mesh networks, each comprisingmultiple nodes; a communication network that communicatively links themultiple mesh networks to a computing device; and the computing deviceconfigured to: establish communication with the multiple mesh networksover the communication network; transmit a discovery message for aservice to the multiple mesh networks via the communication network, thetransmission effective to propagate the discovery message to the nodesin the multiple mesh networks; and receive a response message from eachnode in the multiple mesh networks that supports the service, theresponse message comprising an indication of the supported service andan address of the node.

Alternatively or in addition to the above described mesh network system,any one or combination of: wherein the computing device configured to:insert a binding of the supported service and the address of each nodethat supports the service in a database; wherein the multiple meshnetworks are logically different mesh networks; wherein the multiplemesh networks are located in geographically different locations; whereinthe mesh networks comprise nodes that include a ZigBee application layerand an efficient network stack; and wherein the communication network isthe Internet.

A method of translating an application-layer message from a firstwireless application protocol to a second wireless application protocolcomprises receiving an application-layer message at a gateway via a meshnetwork interface, the application-layer message comprising a sourceaddress and a destination address; forwarding the receivedapplication-layer message over an external network to a translationservice that performs: mapping the source address to an InternetProtocol Version 6 (IPv6) source address; mapping the destinationaddress to an IPv6 destination address; receiving a translatedapplication-layer message from the translation service, the translatedapplication-layer message including the IPv6 source address and the IPv6destination address; transmitting the translated application-layermessage over the mesh network interface using a network stack, thenetwork stack comprising: a transport layer configured to transport theapplication-layer message using User Datagram Protocol (UDP); a networklayer configured to communicate the application-layer message usingIPv6; a data link layer configured to encode the application-layermessage for transmission, the data link layer comprising a 6LoWPANadaptation layer and a Media Access Control (MAC) layer; and a physicallayer configured to transmit the encoded application-layer message overthe mesh network interface.

Alternatively or in addition to the above described method, any one orcombination of: the application-layer message further includes a profileidentifier that identifies an application profile of the first wirelessapplication protocol, the method comprising: forwarding theapplication-layer message over the external network to the translationservice that is associated with the profile identifier; receiving amapping of the profile identifier to the translation service; storingthe received mapping in a database of mappings of profile identifiers totranslation services; and in response to said receiving theapplication-layer message, comparing the profile identifier to one ormore mappings in the database to determine the translation serviceassociated with the profile identifier; wherein the application profileis one of: a lighting control profile, a home automation profile, acommercial building automation profile, a smart energy profile, or asecurity profile.

A mesh network device implemented an application gateway devicecomprises a mesh network interface configured for communication in amesh network; a network interface configured for communication with anexternal network; and a memory and processor system to implement agateway application that is configured to: receive an application-layermessage via the mesh network interface, the application-layer messagecomprising a source address and a destination address; forward theapplication-layer message over the external network to a translationservice implemented to: map the source address to an Internet ProtocolVersion 6 (IPv6) source address; map the destination address to an IPv6destination address; receive a translated application-layer message fromthe translation service, the translated application-layer messageincluding the IPv6 source address and the IPv6 destination address;transmit the translated application-layer message over the mesh networkinterface using a network stack, the network stack comprising: atransport layer configured to transport the application-layer messageusing User Datagram Protocol (UDP); a network layer configured tocommunicate the application-layer message using IPv6; a data link layerconfigured to encode the application-layer message for transmission, thedata link layer comprising a 6LoWPAN adaptation layer and a Media AccessControl (MAC) layer; and a physical layer configured to transmit theencoded application-layer message over the mesh network interface.

Alternatively or in addition to the above described mesh network device,any one or combination of: the application-layer message furtherincludes a profile identifier that identifies an application profile ofthe first wireless application protocol, and the gateway applicationconfigured to: forward the application-layer message over the externalnetwork to the translation service that is associated with the profileidentifier; the gateway application is further configured to: receive amapping of the profile identifier to the translation service; store thereceived mapping in a database of mappings of profile identifiers totranslation services; and in response to the reception of theapplication-layer message, compare the profile identifier to one or moremappings in the database to determine the translation service associatedwith the profile identifier; wherein the application profile is one of:a lighting control profile, a home automation profile, a commercialbuilding automation profile, a smart energy profile, or a securityprofile.

A mesh network system comprises a translation service configured totranslate application-layer messages of a first wireless applicationprotocol to a second wireless application protocol, the translationservice configured to: map a source address in an application-layermessage to an Internet Protocol Version 6 (IPv6) source address; map adestination address in an application-layer message to an IPv6destination address; and a gateway configured to: receive theapplication-layer message in the first wireless application protocol viaa mesh network interface, the application-layer message comprising thesource address and the destination address; forward the receivedapplication-layer message over an external network to the translationservice; receive a translated application-layer message from thetranslation service, the translated application-layer message includingthe IPv6 source address and the IPv6 destination address; transmit thetranslated application-layer message over the mesh network interfaceusing a network stack, the network stack comprising: a transport layerconfigured to transport the application-layer message using UserDatagram Protocol (UDP); a network layer configured to communicate theapplication-layer message using IPv6; a data link layer configured toencode the application-layer message for transmission, the data linklayer comprising a 6LoWPAN adaptation layer and a Media Access Control(MAC) layer; and a physical layer configured to transmit the encodedapplication-layer message over the mesh network interface.

Alternatively or in addition to the above described mesh network system,any one or combination of: the application-layer message furtherincludes a profile identifier that identifies an application profile ofthe first wireless application protocol; and the gateway furtherconfigured to forward the application-layer message over the externalnetwork to the translation service that is associated with the profileidentifier; the gateway application further configured to: receive amapping of the profile identifier to the translation service; store thereceived mapping in a database of mappings of profile identifiers totranslation services; and in response to the reception of theapplication-layer message, compare the profile identifier to one or moremappings in the database to determine the translation service associatedwith the profile identifier; and wherein the application profile is oneof: a lighting control profile, a home automation profile, a commercialbuilding automation profile, a smart energy profile, or a securityprofile.

What is claimed is:
 1. A method of communicating an application-layermessage by a source node over a mesh network, the method comprising, byan application-layer translation application of a dual-stack router:receiving, from the source node using a first network stack thatimplements a first network protocol, the application-layer message thatincludes a source address and a destination address; mapping the sourceaddress to an Internet Protocol Version 6 (IPv6) source address; mappingthe destination address to an IPv6 destination address; transmitting theapplication-layer message by the source node to a destination node inthe mesh network using a second network stack implementing a secondnetwork protocol, the IPv6 source address, and the IPv6 destinationaddress, the second network stack comprising: a transport layerconfigured to transport the application-layer message using UserDatagram Protocol (UDP); a network layer configured to communicate theapplication-layer message using IPv6; a data link layer configured toencode the application-layer message for transmission, the data linklayer comprising a 6LoWPAN adaptation layer and a Media Access Control(MAC) layer; and a physical layer configured to transmit the encodedapplication-layer message with a wireless transceiver in the meshnetwork.
 2. The method of claim 1, wherein the second network stackfurther comprises a Datagram Transport Layer Security (DTLS) layer. 3.The method of claim 1, wherein the second network stack furthercomprises a Constrained Application Protocol (CoAP) layer.
 4. The methodof claim 1, further comprising: serializing the application-layermessage; or in response to said transmitting the application-layermessage, receiving an application-layer response message from thedestination node using the second network stack; and communicating thereceived application-layer response message to an application of thesource node.
 5. The method of claim 4, wherein the application is oneof: a ZigBee application; a Z-Wave application; an Open InterconnectConsortium (OIC) application; an AllJoyn application; or a fabricnetwork application.
 6. The method of claim 1, wherein the physicallayer is an IEEE 802.15.4 Physical (PHY) layer.
 7. The method of claim1, wherein the MAC layer is an IEEE 802.15.4 MAC layer.
 8. A meshnetwork device implemented as a dual-stack router, the mesh networkdevice comprising: a mesh network interface configured for communicationin a mesh network; a memory and processor system that are to implementan application-layer translation application that is configured to:receive, using a first network stack that implements a first networkprotocol, an application-layer message that includes a source addressand a destination address; map the source address to an InternetProtocol Version 6 (IPv6) source address; map the destination address toan IPv6 destination address; transmit the application-layer message to adestination mesh network device using a second network stackimplementing a second network protocol, the mapped source address, andthe mapped destination address, the second network stack comprising: atransport layer configured to transport the application-layer messageusing User Datagram Protocol (UDP); a network layer configured tocommunicate the application-layer message using IPv6; a data link layerconfigured to encode the application-layer message for transmission, thedata link layer comprising a 6LoWPAN adaptation layer and a Media AccessControl (MAC) layer; and a physical layer configured to transmit theencoded application-layer message over the mesh network.
 9. The meshnetwork device of claim 8, wherein the second network stack furthercomprises a Datagram Transport Layer Security (DTLS) layer.
 10. The meshnetwork device of claim 8, wherein a Constrained Application Protocol(CoAP) layer.
 11. The mesh network device of claim 8, wherein the secondnetwork stack is configured to: serialize the application-layer message;or in response to the transmission of the application-layer message,receive an application-layer response message from the destination meshnetwork device; and communicate the received application-layer responsemessage to an application of the mesh network device.
 12. The meshnetwork device of claim 11, wherein the application is one of: a ZigBeeapplication; a Z-Wave application; an Open Interconnect Consortium (OIC)application; an AllJoyn application; or a fabric network application.13. The mesh network device of claim 8, wherein the physical layer is anIEEE 802.15.4 Physical (PHY) layer.
 14. The mesh network device of claim8, wherein the MAC layer is an IEEE 802.15.4 MAC layer.
 15. The meshnetwork device of claim 8, wherein the first network stack comprises oneor more layers of a Z-Wave network stack, and the mesh network devicecomprises a Z-Wave network interface configured for communication in aZ-Wave network.
 16. A mesh network system, comprising: a source nodeconfigured to communicate using a first wireless application protocol;and a dual-stack router, comprising: a mesh network interface configuredfor communication in a mesh network; a memory and processor system thatare to implement an application-layer translation application that isconfigured to: receive, from the source node and using a first networkstack that implements a first network protocol, an application-layermessage that includes a source address and a destination address; mapthe source address to an Internet Protocol Version 6 (IPv6) sourceaddress; map the destination address to an IPv6 destination address;transmit the application-layer message to a destination node using asecond network stack implementing a second network protocol, the mappedsource address, and the mapped destination address, the second networkstack comprising: a transport layer configured to transport theapplication-layer message using User Datagram Protocol (UDP); a networklayer configured to communicate the application-layer message usingIPv6; a data link layer configured to encode the application-layermessage for transmission, the data link layer comprising a 6LoWPANadaptation layer and a Media Access Control (MAC) layer; and a physicallayer configured to transmit the encoded application-layer message overthe mesh network.
 17. The mesh network system of claim 16, wherein thesecond network stack further comprises a Datagram Transport LayerSecurity (DTLS) layer or a Constrained Application Protocol (CoAP)layer.
 18. The mesh network system of claim 16, wherein the secondnetwork stack is configured to: serialize the application-layer message;or in response to the transmission of the application-layer message,receive an application-layer response message from the destination node;and communicate the received application-layer response message to anapplication of the source node.
 19. The mesh network system of claim 18,wherein the application is one of: a ZigBee application; a Z-Waveapplication; an Open Interconnect Consortium (OIC) application; anAllJoyn application; or a fabric network application.
 20. The meshnetwork system of claim 16, wherein the physical layer is an IEEE802.15.4 Physical (PHY) layer and wherein the MAC layer is an IEEE802.15.4 MAC layer.